/* $Id: UtilityFacade.java 
 * Copyright (C) 2011, TRAKHEES
 *  
 * Revision History
 *
 * Date  			Author 		    	Remarks
 * ---------------------------------------------------------------------------------
 *
 */
package ae.pcfc.etks.online.common.facade;

import java.util.List;

import ae.pcfc.etks.online.common.vo.CityVO;
import ae.pcfc.etks.online.common.vo.ClientRoleVO;
import ae.pcfc.etks.online.common.vo.CountryVO;
import ae.pcfc.etks.online.common.vo.DepartmentVO;
import ae.pcfc.etks.online.common.vo.EmirateCityVO;
import ae.pcfc.etks.online.common.vo.EmirateVO;
import ae.pcfc.etks.online.common.vo.LicIssueAuthVO;
import ae.pcfc.etks.online.common.vo.LicTypeVO;
import ae.pcfc.etks.online.common.vo.NameTitleVO;
import ae.pcfc.etks.online.common.vo.VisaTypeVO;

public interface UtilityFacade extends Facade {
	
	/**
	 * getCountryList
	 * Method to get all countries
	 * @param locale
	 * @return
	 * List<CountryVO>
	 */
	public List<CountryVO> getCountryList(String locale);
	
	/**
	 * getLicType
	 * Method to get license types
	 * @return
	 * List<LicTypeVO>
	 */
	public List<LicTypeVO> getLicType();
	
	/**
	 * getNameTitle
	 * Method to get active name titles
	 * @return
	 * List<NameTitleVO>
	 */
	public List<NameTitleVO> getNameTitle();
	
	/**
	 * getVisaType
	 * Method to get all active visa types
	 * @return
	 * List<VisaTypeVO>
	 */
	public List<VisaTypeVO> getVisaType();
	
	/**
	 * getLicIssuingAuth
	 * Method to get all active license issuing authorities
	 * @return
	 * List<LicIssueAuthVO>
	 */
	public List<LicIssueAuthVO> getLicIssuingAuth();
	
	/**
	 * getCityListByCountryCode
	 * Method to get city list by country code
	 * @param countryCode
	 * @param locale
	 * @return
	 * List<CityVO>
	 */
	public List<CityVO> getCityListByCountryCode(String countryCode, String locale);
	
	/**
	 * getClientRoleList
	 * Method to get client role list based on client category
	 * @param clientCategory
	 * @param bHideDefault
	 * @return
	 * List<ClientRoleVO>
	 */
	public List<ClientRoleVO> getClientRoleList(String clientCategory, boolean bHideDefault);
	
	/**
	 * getDepartments
	 * Method to get all departments
	 * @return
	 * List<DepartmentVO>
	 */
	public List<DepartmentVO> getDepartments();
	
	/**
	 * getUserSecurityRole
	 * Method to get security roles associated with a user (username)
	 * @param userName
	 * @return
	 * List<String>
	 */
	public List<String> getUserSecurityRole(String userName);
	
	/**
	 * getLicIssuingAuthorityByCode
	 * Method to get license issuing authority by code
	 * @param licIACode
	 * @return
	 * LicIssueAuthVO
	 */
	public LicIssueAuthVO getLicIssuingAuthorityByCode(String licIACode);

	/**
	 * getAllLicIssuingAuth
	 * 
	 * @return
	 * List<LicIssueAuthVO>
	 */
	public List<LicIssueAuthVO> getAllLicIssuingAuth();
	
	
	public List<EmirateVO> getEmirates(String locale);
	
	
	public List<EmirateCityVO> getEmirateCityByEmirateCode(String emirateCode, String locale);
}
